package com.dji.sample.map.service;

import com.dji.sample.map.model.dto.GroupElementDTO;
import com.dji.sdk.cloudapi.map.CreateMapElementRequest;
import com.dji.sdk.cloudapi.map.MapGroupElement;
import com.dji.sdk.cloudapi.map.UpdateMapElementRequest;
import java.util.List;
import java.util.Optional;

/**
 * 组元素服务接口
 * 定义了对工作空间中地图组元素进行查询、保存、更新和删除操作的方法
 */
public interface IGroupElementService {

    /**
     * 根据组ID查询该组下的所有元素
     * @param groupId 组ID
     * @return 返回地图组元素列表
     */
    List<MapGroupElement> getElementsByGroupId(String groupId);

    /**
     * 保存所有元素
     * @param groupId 组ID
     * @param elementCreate 创建地图元素的请求对象
     * @return 返回保存操作是否成功
     */
    Boolean saveElement(String groupId, CreateMapElementRequest elementCreate);

    /**
     * 根据元素ID查询元素信息并更新元素
     * @param elementId 元素ID
     * @param elementUpdate 更新地图元素的请求对象
     * @param username 用户名
     * @return 返回更新操作是否成功
     */
    Boolean updateElement(String elementId, UpdateMapElementRequest elementUpdate, String username);

    /**
     * 根据元素ID删除元素
     * @param elementId 元素ID
     * @return 返回删除操作是否成功
     */
    Boolean deleteElement(String elementId);

    /**
     * 根据元素ID查询元素，包括元素中的坐标信息
     * @param elementId 元素ID
     * @return 返回包含元素信息的可选对象
     */
    Optional<GroupElementDTO> getElementByElementId(String elementId);
}